using System;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using AuthService.Domain.Auth;
using AuthService.Domain.Tokens;
using AuthService.Domain.OAuth;
using AuthService.Domain.Security;

namespace AuthService.EntityFrameworkCore
{
    /// <summary>
    /// 认证服务数据库上下文接口
    /// </summary>
    public interface IAuthServiceDbContext : IEfCoreDbContext
    {
        /// <summary>
        /// 认证会话
        /// </summary>
        DbSet<AuthSession> AuthSessions { get; }

        /// <summary>
        /// 令牌
        /// </summary>
        DbSet<Token> Tokens { get; }

        /// <summary>
        /// OAuth授权
        /// </summary>
        DbSet<OAuthAuthorization> OAuthAuthorizations { get; }

        /// <summary>
        /// OAuth客户端
        /// </summary>
        DbSet<OAuthClient> OAuthClients { get; }

        /// <summary>
        /// 安全事件
        /// </summary>
        DbSet<SecurityEvent> SecurityEvents { get; }

        /// <summary>
        /// 风险评估
        /// </summary>
        DbSet<RiskAssessment> RiskAssessments { get; }
    }
}